/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package model;

import components.Database;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

/**
 *
 * @author tomkeim
 */
public class Ronde {
    public int rondeID;
    public int rondeNummer;
    public Toernooi toernooi;
    public int status;

    public int getRondeID() {
        return rondeID;
    }

    public void setRondeID(int rondeid) {
        this.rondeID = rondeid;
    }

    public int getRondeNummer() {
        return rondeNummer;
    }

    public int getStatus() {
        return status;
    }

    public void setStatus(int status) {
        this.status = status;
    }

    public void setRondeNummer(int rondenummer) {
        this.rondeNummer = rondenummer;
    }

    public Toernooi getToernooi() {
        return toernooi;
    }

    public void setToernooi(Toernooi toernooi) {
        this.toernooi = toernooi;
    }
    
    public static Ronde[] getRondes(Toernooi toernooi) {
        ArrayList<Ronde> rondesList = new ArrayList<Ronde>();
        Ronde ronde;
        
        String query = "SELECT * FROM Ronde WHERE toernooiid = " + toernooi.getToernooiid();
        
        ResultSet result = Database.executeSelectQuery(query);
        
        try {
            while(result.next()) {
                ronde = new Ronde();
                ronde.setRondeID(result.getInt("rondeid"));
                ronde.setRondeNummer(result.getInt("rondenr"));
                ronde.setToernooi(Toernooi.getToernooi(result.getInt("toernooiid")));
                ronde.setStatus(result.getInt("status"));
                rondesList.add(ronde);
            }
        } catch(SQLException e) {
            System.out.println(e.getMessage());
        }
        
        Ronde[] rondes  = new Ronde[rondesList.size()];
        
        for(int i=0;i<rondesList.size();i++) {
            rondes[i] = rondesList.get(i);
        }
        
        return rondes;
        
    }
    
    public Ronde getRonde(int rondeid) {
        
        Ronde ronde = new Ronde();
        
        String query = "SELECT * FROM Ronde WHERE rondeid = " + rondeid;
        
        ResultSet result = Database.executeSelectQuery(query);
        
        try {
            result.next();
            ronde.setRondeID(result.getInt("rondeid"));
            ronde.setRondeNummer(result.getInt("rondenr"));
            ronde.setToernooi(Toernooi.getToernooi(result.getInt("toernooiid")));
            ronde.setStatus(result.getInt("status"));
        } catch(SQLException e) {
            System.out.println(e.getMessage());
        }
        
        return ronde;
    }

    public boolean delete() {
        boolean successful = false;
        String query = "DELETE FROM Ronde WHERE rondeid = '" + this.getRondeID() + "'";
        if (Database.executeDeleteQuery(query) == 1) {
            // er is 1 record verwijderd
            successful = true;
        }
        return successful;
    }

    public boolean insert() {
        boolean success = false;

        String query = "INSERT INTO Ronde (rondeid,rondenr,toernooiid,status) VALUES (" + this.getRondeID() + ", " + this.getRondeNummer() + ", " + this.getToernooi().getToernooiid() + ", "+this.getStatus()+")";

        if (Database.executeInsertQuery(query) > 0) {

            success = true;
        }

        return success;
    }

    public boolean update() {
        String query = "UPDATE Ronde SET rondenr = " + this.getRondeNummer() + ", toernooiid = "+this.getToernooi().getToernooiid() + ", status = "+this.getStatus()+" WHERE rondeid = " + this.getRondeID();
        if (Database.executeUpdateQuery(query) == 1) {
            return true;
        }
        return false;
    }
    
    @Override
    public String toString() {
        String statusString = "Niet gespeeld";
        if(this.getStatus() == 1) statusString = "Gespeeld";
        return "Ronde #"+this.getRondeNummer() + " ("+statusString+")";
    }
    
}
